Hadoop Hive Hbase 简单区别及应用场景

Hadoop

它是一个分布式计算+分布式文件系统,前者其实就是MapReduce,后者是HDFS。后者可以独立运行,前者可以选择性使用,也可以不使用。

Hive

通俗的说是一个数据仓库,仓库中的数据是被HDFS管理的数据文件,它支持类似sql语句的功能,
你可以通过该语句完成分布式环境下的计算功能,Hive会把语句转换成MapReduce,然后交给Hadoop执行。
这里的计算,仅限于查找和分析,而不是更新、增加和删除。它的优势是对历史数据进行处理,
用时下流行的说法是离线计算,因为它的底层是MapReduce,MapReduce在实时计算上性能很差。
它的做法是把数据文件加载进来作为一个Hive表(或者外部表),让你觉得你的sql操作的是传统的表。

HBase

通俗的说,HBase的作用类似于数据库,传统数据库管理的是集中的本地数据文件,
而HBase基于Hdfs实现对分布式数据文件的管理,比如增删改查。也就是说,HBase只是利用Hadoop的Hdfs帮助其管理数据的持久化文件(HFile),它跟MapReduce没任何关系。HBase的优势在于实时计算,所有实时数据都直接存入Hbase中,客户端通过API直接访问Hbase,实现实时计算。由于它使用的是nosql,或者说是列式结构,从而提高了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。

总结:

  1. Hadoop是Hive和HBase的基础,Hive依赖Hadoop
  2. HBase仅依赖Hadoop的Hdfs模块。
  3. Hive适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被Hadoop管理的数据文件,它支持类sql,
    比编写MapReduce的java代码来的更加方便,它的定位是数据仓库,存储和分析历史数据
  4. Hbase适用于实时计算,采用列式结构的nosql,操作的是自己生成的特殊格式的HFile、被hadoop管理的数据文件,
    它的定位是数据库,或者叫DBMS

最后补充一下:Hive可以直接操作Hdfs中的文件作为它的表的数据,也可以使HBase数据库作为它的表